ABAP 创建BP客户主数据 您所在的位置:网站首页 address lt ABAP 创建BP客户主数据

ABAP 创建BP客户主数据

#ABAP 创建BP客户主数据| 来源: 网络整理| 查看: 265

**

ABAP 创建BP客户主数据

** 推荐使用:CVI_EI_INBOUND_MAIN 创建客户主数据后可以添加信用等其他相关数据。

这个函数的导入导出参数如下:

CALL FUNCTION 'CVI_EI_INBOUND_MAIN' EXPORTING I_DATA = LT_DATA * I_EXT_DATA = IMPORTING E_RETURN = LT_RETURN.

LT_DATA中包含PARTNER和CUSTOMER相关数据。 数据填充可以参照以下DEMO:

**定义调用CVI_EI_INBOUND_MAIN创建的输入参数 DATA:LV_BPARTNERGUID TYPE BU_PARTNER_GUID_BAPI. DATA:LT_RETURN_TAX TYPE TABLE OF BAPIRET2 WITH HEADER LINE, LT_RETURN_FRG TYPE TABLE OF BAPIRET2 WITH HEADER LINE. DATA:LT_RETURN_UKMBP TYPE UKM_T_MONITOR_RETURN . DATA : LS_PARTNER TYPE BUS_EI_EXTERN, LS_CUSTOMER TYPE CMDS_EI_EXTERN, LT_ADDRESSES TYPE BUS_EI_BUPA_ADDRESS_T, LS_ADDRESSES TYPE BUS_EI_BUPA_ADDRESS, LT_PHONE TYPE BUS_EI_BUPA_TELEPHONE_T, LS_PHONE TYPE BUS_EI_BUPA_TELEPHONE, LT_COMPANY TYPE CMDS_EI_COMPANY_T, LS_COMPANY TYPE CMDS_EI_COMPANY, LT_SALES TYPE CMDS_EI_SALES_T, LS_SALES TYPE CMDS_EI_SALES, LT_TAX_IND TYPE CMDS_EI_TAX_IND_T, LS_TAX_IND TYPE CMDS_EI_TAX_IND, LT_ROLES TYPE BUS_EI_BUPA_ROLES_T, LS_ROLES TYPE BUS_EI_BUPA_ROLES, LT_FUNCTIONS TYPE CMDS_EI_FUNCTIONS_T, LS_FUNCTIONS TYPE CMDS_EI_FUNCTIONS, LT_BANKS TYPE BUS_EI_BUPA_BANKDETAIL_T, LS_BANKS TYPE BUS_EI_BUPA_BANKDETAIL. DATA : LS_HEADER TYPE CMDS_EI_HEADER, LS_CENTRAL_DATA TYPE CMDS_EI_CENTRAL_DATA, LS_COMPANY_DATA TYPE CMDS_EI_CMD_COMPANY, LS_SALES_DATA TYPE CMDS_EI_CMD_SALES. DATA : LS_CENTRAL TYPE CMDS_EI_CMD_CENTRAL. DATA : LS_DATA TYPE CVIS_EI_EXTERN, LT_DATA TYPE CVIS_EI_EXTERN_T, LT_RETURN TYPE BAPIRETM, LS_RETURN TYPE BAPIRETI, LS_MSG TYPE BAPIRETC. * 根据伙伴GUID取出客户编号 DATA : LT_PARTNERGUID_LIST TYPE BU_PARTNER_GUID_T, LS_PARTNERGUID_LIST LIKE LINE OF LT_PARTNERGUID_LIST. DATA : LT_CUSTOMER_LIST TYPE CVIS_CUST_LINK_T, LS_CUSTOMER_LIST TYPE CVI_CUST_LINK. "创建信用等相关信息 DATA: IO_FACADE TYPE REF TO CL_UKM_FACADE, IO_BUPA_FACTORY TYPE REF TO CL_UKM_BUPA_FACTORY, IO_PARTNER TYPE REF TO CL_UKM_BUSINESS_PARTNER, IO_ACCOUNT TYPE REF TO CL_UKM_ACCOUNT, LW_BP_CREDIT_SGM TYPE UKM_S_BP_CMS_SGM. DATA: LWA_UKM_S_BP_CMS TYPE UKM_S_BP_CMS. DATA: LV_PARTNER TYPE BU_PARTNER, LV_CREDIT_SGMNT TYPE UKM_CREDIT_SGMNT. DATA : LTC_RETURN TYPE UKM_T_MONITOR_RETURN, LSC_RETURN TYPE UKM_S_MONITOR_RETURN, LV_MSG1 TYPE CHAR100. ****数据处理,开始创建客户主数据************************************************* "创建伙伴GUID TRY . LV_BPARTNERGUID = CL_UUID_FACTORY=>CREATE_SYSTEM_UUID( )->CREATE_UUID_X16( ). CATCH CX_UUID_ERROR. "返回消息 EV_ZMSG = '客户GUID创建失败!'. STATUS = 'S03'. EV_ZTYPE = 'E'. EXIT. ENDTRY. CHECK LV_BPARTNERGUID IS NOT INITIAL. LS_PARTNER-HEADER-OBJECT_TASK = 'I'. LS_PARTNER-HEADER-OBJECT_INSTANCE-BPARTNERGUID = LV_BPARTNERGUID. *LS_PARTNER-HEADER-OBJECT_INSTANCE-BPARTNER = KUNNR ."客户号 导入的客户代码 LS_PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CONTROL-CATEGORY = 2. "业务伙伴类别 LS_PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CONTROL-GROUPING = KTOKD. " 账户组 LS_PARTNER-CENTRAL_DATA-COMMON-DATA-BP_ORGANIZATION-NAME1 = NAME1. " 客户名称 LS_PARTNER-CENTRAL_DATA-COMMON-DATA-BP_CENTRALDATA-SEARCHTERM1 = SORTL. "搜素词 *LS_PARTNER-CENTRAL_DATA-BANKDETAIL-DATA-BANK_KEY = BANKL."银行代码 "角色 LS_ROLES-TASK = 'I'. LS_ROLES-DATA_KEY = 'FLCU01'. "角色 APPEND LS_ROLES TO LT_ROLES. LS_ROLES-DATA_KEY = 'FLCU00'. "角色 APPEND LS_ROLES TO LT_ROLES. LS_ROLES-DATA_KEY = 'UKM000'. "角色 APPEND LS_ROLES TO LT_ROLES. *LS_ROLES-DATA-ROLECATEGORY = 'ZSD001'. *APPEND LS_ROLES TO LT_ROLES. LS_PARTNER-CENTRAL_DATA-ROLE-ROLES = LT_ROLES. ****客户地址数据*********************************************** CLEAR : LS_ADDRESSES,LT_ADDRESSES. LS_ADDRESSES-TASK = 'I'. LS_ADDRESSES-DATA-POSTAL-DATA-COUNTRY = LAND1. "国家 LS_ADDRESSES-DATA-POSTAL-DATAX-COUNTRY = 'X'. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING INPUT = REGIO IMPORTING OUTPUT = REGIO. LS_ADDRESSES-DATA-POSTAL-DATA-REGION = REGIO. "省份 LS_ADDRESSES-DATA-POSTAL-DATAX-REGION = 'X'. LS_ADDRESSES-DATA-POSTAL-DATA-STREET = STRAS. "注册地址 LS_ADDRESSES-DATA-POSTAL-DATAX-STREET = 'X'. LS_ADDRESSES-DATA-POSTAL-DATA-LANGUISO = 'ZH'. LS_ADDRESSES-DATA-POSTAL-DATA-POSTL_COD1 = PSTLZ . "邮政编码 LS_ADDRESSES-DATA-POSTAL-DATAX-POSTL_COD2 = 'X' . LS_ADDRESSES-DATA-POSTAL-DATA-CITY = ORT01. "城市 LS_ADDRESSES-DATA-POSTAL-DATAX-CITY = 'X'. LS_ADDRESSES-DATA-POSTAL-DATA-HOUSE_NO = 'X'. "门牌号 LS_ADDRESSES-DATA-POSTAL-DATAX-HOUSE_NO = HOUSE_NUM1. CLEAR: LS_PHONE,LT_PHONE. LS_PHONE-CONTACT-DATA-TELEPHONE = TELF1 ."电话 LS_PHONE-CONTACT-DATAX-TELEPHONE = ABAP_TRUE . APPEND LS_PHONE TO LT_PHONE. LS_ADDRESSES-DATA-COMMUNICATION-PHONE-PHONE = LT_PHONE. APPEND LS_ADDRESSES TO LT_ADDRESSES. LS_PARTNER-CENTRAL_DATA-ADDRESS-ADDRESSES = LT_ADDRESSES. ****客户数据表头************************************************ LS_HEADER-OBJECT_TASK = 'I'. LS_CUSTOMER-HEADER = LS_HEADER. ****中心数据**************************************************** LS_CENTRAL-DATA-KUKLA = KUKLA."客户分类 LS_CENTRAL-DATAX-KUKLA = 'X'. LS_CENTRAL-DATA-BRAN2 = BRAN2."行业代码 LS_CENTRAL-DATAX-BRAN1 = 'X'. LS_CENTRAL_DATA-CENTRAL = LS_CENTRAL. LS_CENTRAL-DATA-BAHNE = BAHNE. "社会信用代码 LS_CENTRAL-DATAX-BAHNE = 'X'. LS_CENTRAL-DATA-BAHNS = BAHNS. "法人电话 LS_CENTRAL-DATAX-BAHNS = 'X'. LS_CENTRAL-DATA-LOCCO = LOCCO. "法人 LS_CENTRAL-DATAX-LOCCO = 'X'. LS_CENTRAL-DATA-KATR1 = KATR1. "是否关联客户 LS_CENTRAL-DATAX-KATR1 = 'X'. LS_CENTRAL-DATA-KATR2 = KATR2. "拦账日 LS_CENTRAL-DATAX-KATR2 = 'X'. LS_CENTRAL-DATA-KATR3 = KATR3. "对账标识 LS_CENTRAL-DATAX-KATR3 = 'X'. LS_CENTRAL-DATA-KATR4 = KATR4. "票随货到标识 LS_CENTRAL-DATAX-KATR4 = 'X'. LS_CENTRAL-DATA-KATR5 = KATR5. "客户与业务员对应标识 LS_CENTRAL-DATAX-KATR5 = 'X'. LS_CENTRAL-DATA-KATR6 = KATR6. "区域/组代码 LS_CENTRAL-DATAX-KATR6 = 'X'. LS_CENTRAL-DATA-KATR7 = KATR7. "业务代码 LS_CENTRAL-DATAX-KATR7 = 'X'. LS_CENTRAL_DATA-CENTRAL = LS_CENTRAL. "客户销售的出发票 LS_TAX_IND-TASK = 'I'. LS_TAX_IND-DATA_KEY-ALAND = 'CN'. LS_TAX_IND-DATA_KEY-TATYP = 'MWST'. LS_TAX_IND-DATA-TAXKD = TAXKD. "税分类 LS_TAX_IND-DATAX-TAXKD = 'X'. APPEND LS_TAX_IND TO LT_TAX_IND. LS_CENTRAL_DATA-TAX_IND-TAX_IND = LT_TAX_IND. LS_CUSTOMER-CENTRAL_DATA = LS_CENTRAL_DATA. ****公司代码数据************************************************ IF BUKRS IS NOT INITIAL. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' " 统驭科目补零 EXPORTING INPUT = AKONT IMPORTING OUTPUT = AKONT. LS_COMPANY-TASK = 'I'. LS_COMPANY-DATA_KEY-BUKRS = BUKRS. " 公司代码 LS_COMPANY-DATA-AKONT = AKONT. " 统驭科目 APPEND LS_COMPANY TO LT_COMPANY. LS_COMPANY_DATA-COMPANY = LT_COMPANY. LS_CUSTOMER-COMPANY_DATA = LS_COMPANY_DATA. ENDIF. *****销售数据**************************************************** IF VKORG IS NOT INITIAL . LS_SALES-TASK = 'I'. LS_SALES-DATA_KEY-VKORG = VKORG. " 销售组织 LS_SALES-DATA_KEY-VTWEG = '00'. " 分销渠道 LS_SALES-DATA_KEY-SPART = '00'. " 产品组 LS_SALES-DATA-KDGRP = KDGRP. "客户组 LS_SALES-DATAX-KDGRP = ABAP_TRUE. LS_SALES-DATA-VKBUR = VKBUR. "销售部门 LS_SALES-DATAX-VKBUR = ABAP_TRUE. LS_SALES-DATA-VKGRP = VKGRP. "销售组 LS_SALES-DATAX-VKGRP = ABAP_TRUE. LS_SALES-DATA-KALKS = KALKS. "客户定价过程 LS_SALES-DATAX-KALKS = ABAP_TRUE. LS_SALES-DATA-VWERK = VWERK. "工厂 LS_SALES-DATAX-VWERK = ABAP_TRUE. LS_SALES-DATA-VSBED = '01'. "装运条件 LS_SALES-DATAX-VSBED = ABAP_TRUE. LS_SALES-DATA-WAERS = WAERS."币种 LS_SALES-DATAX-WAERS = ABAP_TRUE. LS_SALES-DATA-ZTERM = ZTERM."付款条件 LS_SALES-DATAX-ZTERM = ABAP_TRUE. LS_SALES-DATA-KTGRD = KTGRD."客户科目分配组 LS_SALES-DATAX-KTGRD = ABAP_TRUE. "Function伙伴功能 PARVW = 'ZP'. "销售员类别 LS_FUNCTIONS-TASK = 'I'. CALL FUNCTION 'CONVERSION_EXIT_PARVW_INPUT' EXPORTING INPUT = PARVW "售达方 IMPORTING OUTPUT = LS_FUNCTIONS-DATA_KEY-PARVW. CALL FUNCTION 'CONVERSION_EXIT_PARVW_INPUT' EXPORTING INPUT = KUNN2 "业务合作伙伴 IMPORTING OUTPUT = LS_FUNCTIONS-DATA-PARTNER. APPEND LS_FUNCTIONS TO LT_FUNCTIONS. LS_SALES-FUNCTIONS-FUNCTIONS = LT_FUNCTIONS. APPEND LS_SALES TO LT_SALES. LS_SALES_DATA-SALES = LT_SALES. LS_CUSTOMER-SALES_DATA = LS_SALES_DATA. ENDIF. *****银行数据**************************************************** LS_BANKS-DATA-BANK_KEY = BANKL. "银行代码 LS_BANKS-DATAX-BANK_KEY = ABAP_TRUE. LS_BANKS-DATA-BANKACCOUNTNAME = BANKA. "开户行 LS_BANKS-DATAX-BANKACCOUNTNAME = ABAP_TRUE. "开户行 LS_BANKS-DATA-BANK_ACCT = BANKN. "账号 LS_BANKS-DATAX-BANK_ACCT = ABAP_TRUE. " LS_BANKS-DATA-BANK_CTRY = 'CN'. "银行国家代码 LS_BANKS-DATAX-BANK_CTRY = ABAP_TRUE. " APPEND LS_BANKS TO LT_BANKS. LS_PARTNER-CENTRAL_DATA-BANKDETAIL-BANKDETAILS = LT_BANKS. "拿到PARTNER和CUSTOMER数据开始创建客户 LS_DATA-PARTNER = LS_PARTNER. LS_DATA-CUSTOMER = LS_CUSTOMER. APPEND LS_DATA TO LT_DATA. CALL FUNCTION 'CVI_EI_INBOUND_MAIN' EXPORTING I_DATA = LT_DATA * I_EXT_DATA = IMPORTING E_RETURN = LT_RETURN. LOOP AT LT_RETURN INTO LS_RETURN. LOOP AT LS_RETURN-OBJECT_MSG INTO LS_MSG WHERE TYPE = 'E' OR TYPE = 'A'. CONCATENATE EV_ZMSG LS_MSG-MESSAGE INTO EV_ZMSG. ENDLOOP. ENDLOOP. IF EV_ZMSG IS INITIAL. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING WAIT = ABAP_TRUE. * 根据伙伴GUID取出客户编号 LS_PARTNERGUID_LIST = LS_PARTNER-HEADER-OBJECT_INSTANCE-BPARTNERGUID. APPEND LS_PARTNERGUID_LIST TO LT_PARTNERGUID_LIST. LT_CUSTOMER_LIST = CVI_MAPPER=>GET_INSTANCE( )->GET_ASSIGNED_CUSTOMERS_FOR_BPS( I_PARTNER_GUIDS = LT_PARTNERGUID_LIST ). IF LT_CUSTOMER_LIST IS NOT INITIAL. READ TABLE LT_CUSTOMER_LIST INTO LS_CUSTOMER_LIST INDEX 1 . IF SY-SUBRC EQ 0. CONCATENATE '客户' LS_CUSTOMER_LIST-CUSTOMER '创建成功!' INTO EV_ZMSG. KUNNR = LS_CUSTOMER_LIST-CUSTOMER. "导出KUNNR EV_ZTYPE = 'S'. STATUS = 'S02'. ENDIF. ENDIF. ELSE. * EV_ZMSG = '客户创建出错,客户部分数据出错,请检查是否是BP伙伴功能问题。'. EV_ZTYPE = 'E'. STATUS = 'S03'. EXIT. ENDIF. *-------------------------------------------------------------------------------* "客户创建成功后开始维护税号等数据 DATA :LT_TAXR TYPE TABLE OF BAPIRET2 WITH HEADER LINE. DATA :LV_TAXMSG TYPE CHAR100. CALL FUNCTION 'BAPI_BUPA_TAX_ADD' EXPORTING businesspartner = KUNNR taxtype = 'CN5' taxnumber = TAXNUMXL TABLES RETURN = LT_TAXR . LOOP AT LT_TAXR WHERE TYPE = 'E' OR TYPE = 'A'. CONCATENATE LV_TAXMSG LT_TAXR-MESSAGE INTO LV_TAXMSG. ENDLOOP. IF LV_TAXMSG IS INITIAL . CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING WAIT = ABAP_TRUE. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' . EV_ZMSG = '客户创建成功,但是税号相关数据创建失败!'. EV_ZTYPE = 'E'. STATUS = 'S002'. EXIT. ENDIF. *-------------------------------------------------------------------------------* "客户创建成功后开始维护信用段数据 * 创建'MAINTAIN'对象 IO_FACADE = CL_UKM_FACADE=>CREATE( I_ACTIVITY = CL_UKM_CNST_EVENTING=>BP_MAINTENANCE ). IO_BUPA_FACTORY = IO_FACADE->GET_BUPA_FACTORY( ). LV_PARTNER = KUNNR. LV_CREDIT_SGMNT = '6666'. "信用段 默认值 IO_PARTNER = IO_BUPA_FACTORY->GET_BUSINESS_PARTNER( LV_PARTNER ). IO_PARTNER->GET_BP_CMS( IMPORTING ES_BP_CMS = LWA_UKM_S_BP_CMS ). LWA_UKM_S_BP_CMS-RISK_CLASS = RISK_CLASS. "风险类 LWA_UKM_S_BP_CMS-CHECK_RULE = 'Z1'. "检查规则 LWA_UKM_S_BP_CMS-LIMIT_RULE = 'ZB2B-EXIST'. "信用规则 IO_PARTNER->SET_BP_CMS( LWA_UKM_S_BP_CMS ). CALL METHOD IO_BUPA_FACTORY->GET_CREDIT_ACCOUNT EXPORTING I_PARTNER = LV_PARTNER I_CREDIT_SGMNT = LV_CREDIT_SGMNT RECEIVING RO_CREDIT_ACCOUNT = IO_ACCOUNT. IO_ACCOUNT->GET_BP_CMS_SGM( IMPORTING ES_BP_CMS_SGM = LW_BP_CREDIT_SGM ). LW_BP_CREDIT_SGM-CREDIT_LIMIT = CREDIT_LIMIT."信用额度 IO_ACCOUNT->SET_BP_CMS_SGM( EXPORTING IS_BP_CMS_SGM = LW_BP_CREDIT_SGM ). IO_BUPA_FACTORY->SAVE_ALL( EXPORTING I_UPD_TASK = ABAP_FALSE RECEIVING ET_RETURN = LTC_RETURN ). LOOP AT LTC_RETURN INTO LSC_RETURN WHERE MSGTY = 'E' OR MSGTY = 'A'. CONCATENATE LV_MSG1 LSC_RETURN-MESSAGE INTO LV_MSG1. ENDLOOP. IF LV_MSG1 IS INITIAL. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING WAIT = ABAP_TRUE. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' . EV_ZMSG = '客户创建成功,但是信用相关数据创建失败!'. EV_ZTYPE = 'S'. STATUS = 'S002'. ENDIF.


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有